// 页面加载完成后执行
document.addEventListener('DOMContentLoaded', function() {
    // 导航切换功能
    initNavigation();
    
    // 表单处理
    initFormHandlers();
    
    // 导出功能
    initExportHandlers();
});

// 初始化导航功能
function initNavigation() {
    document.querySelectorAll('.nav-links a').forEach(link => {
        link.addEventListener('click', function(e) {
            e.preventDefault();
            
            // 更新导航激活状态
            document.querySelectorAll('.nav-links a').forEach(a => {
                a.classList.remove('active');
            });
            this.classList.add('active');
            
            // 显示对应内容区域
            const targetId = this.getAttribute('data-target');
            document.querySelectorAll('.content-section').forEach(section => {
                section.classList.remove('active');
            });
            document.getElementById(targetId).classList.add('active');
        });
    });
}

// 初始化表单处理
function initFormHandlers() {
    // 安全检查登记状态切换
    const statusRadios = document.querySelectorAll('input[name="overall"]');
    
    statusRadios.forEach(radio => {
        radio.addEventListener('change', function() {
            const remarkField = document.getElementById('other');
            if (this.value === 'abnormal') {
                remarkField.required = true;
                remarkField.parentElement.style.display = 'block';
            } else {
                remarkField.required = false;
            }
        });
    });
    
    // 表单提交处理 - 完全跳过安全检查表单，因为它有自己的处理逻辑
    const checkForm = document.getElementById('checkForm');
    if (checkForm) {
        // 如果是安全检查表单，完全不处理，让页面自己的逻辑处理
        console.log('Safety check form detected, skipping app.js form handler');
    }
}

// 初始化导出功能
function initExportHandlers() {
    const exportBtn = document.querySelector('.export-btn');
    if (exportBtn) {
        exportBtn.addEventListener('click', function() {
            exportToExcel();
        });
    }
}

// 提交安全检查数据 - 已禁用，由页面自己处理
function submitSafetyCheck(data) {
    // 不再处理，由页面自己的表单处理逻辑处理
    console.log('submitSafetyCheck function disabled, using page-specific handler');
}

// 导出Excel功能
function exportToExcel() {
    // 获取当前查询参数
    const params = new URLSearchParams();
    
    const startDate = document.querySelector('input[type="date"]:first-of-type')?.value;
    const endDate = document.querySelector('input[type="date"]:last-of-type')?.value;
    const termId = document.getElementById('searchTerm')?.value;
    const labId = document.getElementById('searchLab')?.value;
    const status = document.getElementById('searchStatus')?.value;
    
    if (startDate) params.append('startDate', startDate);
    if (endDate) params.append('endDate', endDate);
    if (termId) params.append('termId', termId);
    if (labId) params.append('labId', labId);
    if (status) params.append('status', status);
    
    // 创建下载链接
    const url = `/api/safety-check/export?${params.toString()}`;
    window.open(url, '_blank');
}

// 工具函数：格式化日期
function formatDate(dateString) {
    const date = new Date(dateString);
    return date.toLocaleDateString('zh-CN');
}

// 工具函数：格式化状态
function formatStatus(status) {
    const statusMap = {
        'NORMAL': '正常',
        'ABNORMAL': '异常',
        'PENDING': '待处理',
        'HANDLED': '已处理'
    };
    return statusMap[status] || status;
}

// 删除确认
function confirmDelete(type, id, name) {
    if (confirm(`确定要删除${type}"${name}"吗？此操作不可撤销。`)) {
        fetch(`/api/${type}/${id}`, {
            method: 'DELETE'
        })
        .then(response => response.json())
        .then(result => {
            if (result.success) {
                alert('删除成功！');
                location.reload();
            } else {
                alert('删除失败：' + result.message);
            }
        })
        .catch(error => {
            console.error('Error:', error);
            alert('删除失败，请稍后重试');
        });
    }
}

// 标记处理状态
function markAsHandled(checkId) {
    if (confirm('确定要标记为已处理吗？')) {
        fetch(`/api/safety-check/${checkId}/handle`, {
            method: 'PUT'
        })
        .then(response => response.json())
        .then(result => {
            if (result.success) {
                alert('状态更新成功！');
                location.reload();
            } else {
                alert('更新失败：' + result.message);
            }
        })
        .catch(error => {
            console.error('Error:', error);
            alert('更新失败，请稍后重试');
        });
    }
} 

// 显示学院添加模态框
function showAddCollegeModal() {
    const name = prompt('请输入学院名称：');
    if (name && name.trim()) {
        addCollege(name.trim());
    }
}

// 添加学院
function addCollege(name) {
    fetch('/api/colleges', {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json',
        },
        body: JSON.stringify({ name: name })
    })
    .then(response => response.json())
    .then(result => {
        if (result.success) {
            alert('学院添加成功！');
            location.reload();
        } else {
            alert('添加失败：' + result.message);
        }
    })
    .catch(error => {
        console.error('Error:', error);
        alert('添加失败，请稍后重试');
    });
}

// 编辑学院
function editCollege(id) {
    const name = prompt('请输入新的学院名称：');
    if (name && name.trim()) {
        fetch(`/api/colleges/${id}`, {
            method: 'PUT',
            headers: {
                'Content-Type': 'application/json',
            },
            body: JSON.stringify({ name: name.trim() })
        })
        .then(response => response.json())
        .then(result => {
            if (result.success) {
                alert('学院更新成功！');
                location.reload();
            } else {
                alert('更新失败：' + result.message);
            }
        })
        .catch(error => {
            console.error('Error:', error);
            alert('更新失败，请稍后重试');
        });
    }
}

// 删除学院
function deleteCollege(id, name) {
    confirmDelete('学院', id, name);
}

// 显示学期添加模态框
function showAddTermModal() {
    // 这里应该显示一个模态框，简化处理
    const name = prompt('请输入学期名称：');
    const startDate = prompt('请输入开始日期 (YYYY-MM-DD)：');
    const endDate = prompt('请输入结束日期 (YYYY-MM-DD)：');
    
    if (name && startDate && endDate) {
        addTerm(name, startDate, endDate);
    }
}

// 添加学期
function addTerm(name, startDate, endDate) {
    fetch('/api/terms', {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json',
        },
        body: JSON.stringify({ 
            name: name,
            startDate: startDate,
            endDate: endDate,
            status: 'INACTIVE'
        })
    })
    .then(response => response.json())
    .then(result => {
        if (result.success) {
            alert('学期添加成功！');
            location.reload();
        } else {
            alert('添加失败：' + result.message);
        }
    })
    .catch(error => {
        console.error('Error:', error);
        alert('添加失败，请稍后重试');
    });
}

// 编辑学期
function editTerm(id) {
    // 简化处理，实际应该获取当前数据并显示在表单中
    const name = prompt('请输入新的学期名称：');
    if (name && name.trim()) {
        fetch(`/api/terms/${id}`, {
            method: 'PUT',
            headers: {
                'Content-Type': 'application/json',
            },
            body: JSON.stringify({ name: name.trim() })
        })
        .then(response => response.json())
        .then(result => {
            if (result.success) {
                alert('学期更新成功！');
                location.reload();
            } else {
                alert('更新失败：' + result.message);
            }
        })
        .catch(error => {
            console.error('Error:', error);
            alert('更新失败，请稍后重试');
        });
    }
}

// 删除学期
function deleteTerm(id, name) {
    confirmDelete('学期', id, name);
}

// 显示实验室添加模态框
function showAddLabModal() {
    const name = prompt('请输入实验室名称：');
    const collegeId = prompt('请输入所属学院ID：');
    
    if (name && collegeId) {
        addLab(name, collegeId);
    }
}

// 添加实验室
function addLab(name, collegeId) {
    fetch('/api/laboratories', {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json',
        },
        body: JSON.stringify({ 
            name: name,
            collegeId: collegeId
        })
    })
    .then(response => response.json())
    .then(result => {
        if (result.success) {
            alert('实验室添加成功！');
            location.reload();
        } else {
            alert('添加失败：' + result.message);
        }
    })
    .catch(error => {
        console.error('Error:', error);
        alert('添加失败，请稍后重试');
    });
}

// 编辑实验室
function editLab(id) {
    const name = prompt('请输入新的实验室名称：');
    if (name && name.trim()) {
        fetch(`/api/laboratories/${id}`, {
            method: 'PUT',
            headers: {
                'Content-Type': 'application/json',
            },
            body: JSON.stringify({ name: name.trim() })
        })
        .then(response => response.json())
        .then(result => {
            if (result.success) {
                alert('实验室更新成功！');
                location.reload();
            } else {
                alert('更新失败：' + result.message);
            }
        })
        .catch(error => {
            console.error('Error:', error);
            alert('更新失败，请稍后重试');
        });
    }
}

// 删除实验室
function deleteLab(id, name) {
    confirmDelete('实验室', id, name);
}

// 显示用户添加模态框
function showAddUserModal() {
    // 这里应该显示一个完整的模态框，简化处理
    const username = prompt('请输入用户名：');
    const realName = prompt('请输入真实姓名：');
    const password = prompt('请输入密码：');
    const role = prompt('请输入角色 (admin/lab_manager)：');
    
    if (username && realName && password && role) {
        addUser(username, realName, password, role);
    }
}

// 添加用户
function addUser(username, realName, password, role) {
    fetch('/api/users', {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json',
        },
        body: JSON.stringify({ 
            username: username,
            realName: realName,
            password: password,
            role: role
        })
    })
    .then(response => response.json())
    .then(result => {
        if (result.success) {
            alert('用户添加成功！');
            location.reload();
        } else {
            alert('添加失败：' + result.message);
        }
    })
    .catch(error => {
        console.error('Error:', error);
        alert('添加失败，请稍后重试');
    });
}

// 编辑用户
function editUser(id) {
    const realName = prompt('请输入新的真实姓名：');
    if (realName && realName.trim()) {
        fetch(`/api/users/${id}`, {
            method: 'PUT',
            headers: {
                'Content-Type': 'application/json',
            },
            body: JSON.stringify({ realName: realName.trim() })
        })
        .then(response => response.json())
        .then(result => {
            if (result.success) {
                alert('用户更新成功！');
                location.reload();
            } else {
                alert('更新失败：' + result.message);
            }
        })
        .catch(error => {
            console.error('Error:', error);
            alert('更新失败，请稍后重试');
        });
    }
}

// 删除用户
function deleteUser(id, username) {
    confirmDelete('用户', id, username);
}

// 加载管理员负责的实验室
function loadManagerLabs() {
    const managerId = document.getElementById('manager').value;
    if (!managerId) {
        // 清空复选框选择
        document.querySelectorAll('#labCheckboxes input[type="checkbox"]').forEach(cb => {
            cb.checked = false;
        });
        return;
    }
    
    fetch(`/api/users/${managerId}/labs`)
        .then(response => response.json())
        .then(result => {
            if (result.success) {
                // 清空现有选择
                document.querySelectorAll('#labCheckboxes input[type="checkbox"]').forEach(cb => {
                    cb.checked = false;
                });
                
                // 勾选该管理员负责的实验室
                result.data.forEach(labId => {
                    const checkbox = document.querySelector(`#lab_${labId}`);
                    if (checkbox) {
                        checkbox.checked = true;
                    }
                });
            }
        })
        .catch(error => {
            console.error('Error:', error);
        });
}

// 显示检查详情
function showCheckDetail(id) {
    fetch(`/api/safety-check/${id}`)
        .then(response => response.json())
        .then(result => {
            if (result.success) {
                const record = result.data;
                let detailHtml = `
                    <div>
                        <h3>安全检查详情</h3>
                        <p><strong>实验室：</strong>${record.laboratory.name}</p>
                        <p><strong>学期：</strong>${record.term.name}</p>
                        <p><strong>检查日期：</strong>${record.checkDate}</p>
                        <p><strong>检查人员：</strong>${record.checkerName}</p>
                        <p><strong>门窗状态：</strong>${record.windowStatus == 'ok' ? '正常' : '异常'}</p>
                        <p><strong>电路状态：</strong>${record.circuitStatus == 'ok' ? '正常' : '异常'}</p>
                        <p><strong>消防设施：</strong>${record.fireStatus == 'ok' ? '正常' : '异常'}</p>
                        <p><strong>仪器设备：</strong>${record.equipmentStatus == 'ok' ? '正常' : '异常'}</p>
                        <p><strong>物品摆放：</strong>${record.itemsStatus == 'ok' ? '正常' : '异常'}</p>
                        <p><strong>清洁卫生：</strong>${record.hygieneStatus == 'ok' ? '正常' : '异常'}</p>
                        <p><strong>其他说明：</strong>${record.remark || '无'}</p>
                        <p><strong>总体状态：</strong>${record.overallStatus == 'NORMAL' ? '正常' : '异常'}</p>
                        ${record.handleTime ? `<p><strong>处理时间：</strong>${record.handleTime}</p>` : ''}
                    </div>
                `;
                
                // 创建模态框显示详情（简化处理，使用alert）
                alert(detailHtml.replace(/<[^>]*>/g, '\n').replace(/\n+/g, '\n'));
            } else {
                alert('获取详情失败：' + result.message);
            }
        })
        .catch(error => {
            console.error('Error:', error);
            alert('获取详情失败，请稍后重试');
        });
}